export function isArray(value) {
  return Object.prototype.toString.call(value) === '[object Array]';
}

export function isObject(value) {
  return Object.prototype.toString.call(value) === '[object Object]';
}

export function isString(value) {
  return typeof value === 'string';
}

export function isNumber(value) {
  return typeof value === 'number';
}

export function isBoolean(value) {
  return typeof value === 'boolean';
}

export function isUndefined(value) {
  return value === undefined;
}

export function isNull(value) {
  return value === null;
}

export function isFunction(value) {
  return typeof value === 'function';
}

export function isSymbol(value) {
  return typeof value === 'symbol';
}

export function isEmptyObject(value) {
  return isObject(value) && Object.getOwnPropertyNames(value).length === 0;
}

export function isKey(value) {
  return isString(value) || isNumber(value) || isSymbol(value);
}